home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Rectangle;
- import java.awt.image.IndexColorModel;
- import java.awt.image.MemoryImageSource;
- import java.io.DataInputStream;
- import java.io.IOException;
- import java.net.URL;
-
- final class ColImg extends ColObj {
- private float m_imgLft;
- private float m_imgTop;
- private Image m_colImg;
- private short m_imgWidth;
- private short m_imgHeight;
- private boolean m_imgFnd;
- private ColGrph m_colGraphicObj;
- public int m_imgType;
- public byte useOffScreen;
- public Rectangle m_bounds = new Rectangle();
-
- public void draw(Graphics var1) {
- if (!this.m_imgFnd) {
- int var9 = (int)((this.m_imgLft - this.m_colGraphicObj.m_xOrg) * this.m_colGraphicObj.m_mag);
- int var10 = (int)((this.m_imgTop - this.m_colGraphicObj.m_yOrg) * this.m_colGraphicObj.m_mag);
- int var12 = (int)((float)this.m_imgWidth * this.m_colGraphicObj.m_mag);
- int var13 = (int)((float)this.m_imgHeight * this.m_colGraphicObj.m_mag);
- var1.setColor(Color.gray);
- var1.fillRect(var9, var10, var12, var13);
- var1.setColor(Color.black);
- var1.drawRect(var9, var10, var12, var13);
- var1.drawLine(var9, var10, var12 + var9, var13 + var10);
- var1.drawLine(var9 + var12, var10, var9, var10 + var13);
- } else {
- int var2 = (int)((float)this.m_imgWidth * this.m_colGraphicObj.m_mag);
- int var3 = (int)((float)this.m_imgHeight * this.m_colGraphicObj.m_mag);
- this.m_colGraphicObj.m_appComp.prepareImage(this.m_colImg, var2, var3, this.m_colGraphicObj.m_appComp);
- if (this.useOffScreen == 1) {
- Image var5 = this.m_colGraphicObj.m_appComp.createImage(var2, var3);
- Object var6 = null;
- Graphics var14 = var5.getGraphics();
-
- while(true) {
- int var11 = this.m_colGraphicObj.m_appComp.checkImage(this.m_colImg, var2, var3, this.m_colGraphicObj.m_appComp);
- if ((var11 & 32) != 0) {
- var14.drawImage(this.m_colImg, 0, 0, var2, var3, this.m_colGraphicObj.m_appComp);
- var14.dispose();
- var1.drawImage(var5, (int)((this.m_imgLft - this.m_colGraphicObj.m_xOrg) * this.m_colGraphicObj.m_mag), (int)((this.m_imgTop - this.m_colGraphicObj.m_yOrg) * this.m_colGraphicObj.m_mag), var2, var3, this.m_colGraphicObj.m_appComp);
- return;
- }
-
- try {
- Thread.sleep(10L);
- } catch (InterruptedException var7) {
- }
- }
- } else {
- while(true) {
- int var4 = this.m_colGraphicObj.m_appComp.checkImage(this.m_colImg, var2, var3, this.m_colGraphicObj.m_appComp);
- if ((var4 & 32) != 0) {
- var1.drawImage(this.m_colImg, (int)((this.m_imgLft - this.m_colGraphicObj.m_xOrg) * this.m_colGraphicObj.m_mag), (int)((this.m_imgTop - this.m_colGraphicObj.m_yOrg) * this.m_colGraphicObj.m_mag), var2, var3, this.m_colGraphicObj.m_appComp);
- return;
- }
-
- try {
- Thread.sleep(10L);
- } catch (InterruptedException var8) {
- }
- }
- }
- }
- }
-
- public ColImg(DataInputStream var1, ColGrph var2, Graphics var3) throws IOException {
- this.m_colGraphicObj = var2;
- this.m_imgType = var1.readUnsignedByte();
- this.m_imgLft = (float)var1.readShort() + (float)var1.readShort() / 65536.0F;
- this.m_imgTop = (float)var1.readShort() + (float)var1.readShort() / 65536.0F;
- this.m_imgWidth = var1.readShort();
- this.m_imgHeight = var1.readShort();
- int var5 = var1.readInt();
- boolean var6 = true;
- if (this.m_imgType != 1) {
- String var7 = new String();
-
- for(int var4 = 0; var4 < var5; ++var4) {
- var7 = var7 + (char)var1.readByte();
- }
-
- if (this.m_imgHeight >= 1 && this.m_imgWidth >= 1) {
- this.m_colImg = this.m_colGraphicObj.m_appComp.getImage(new URL(this.m_colGraphicObj.m_appComp.m_cvFilePath + var7));
- } else {
- var6 = false;
- }
- } else {
- byte[] var20 = new byte[var5];
- int var8 = 0;
- int var9 = 0;
- byte[] var13 = new byte[2];
- IndexColorModel var14 = new IndexColorModel(1, 2, var13, var13, var13);
- int var10 = this.m_imgHeight * ((this.m_imgWidth + 7) / 8);
- byte[] var15 = new byte[var10];
- var1.read(var15);
-
- for(int var16 = this.m_imgHeight; var16 > 0; --var16) {
- char var11 = (char)var15[var8];
- char var12 = 128;
-
- for(int var17 = this.m_imgWidth; var17 > 0; --var17) {
- int var19 = var11 & var12;
- if (var19 == 0) {
- var20[var9++] = 0;
- } else {
- var20[var9++] = -1;
- }
-
- var12 = (char)(var12 >> 1);
- if (var12 == 0) {
- ++var8;
- if (var17 != 1) {
- var11 = (char)var15[var8];
- }
-
- var12 = 128;
- }
- }
-
- if (var12 != 128) {
- ++var8;
- }
- }
-
- var13[0] = -1;
- this.m_colImg = this.m_colGraphicObj.m_appComp.createImage(new MemoryImageSource(this.m_imgWidth, this.m_imgHeight, var14, var20, 0, this.m_imgWidth));
- }
-
- this.m_bounds.x = (int)this.m_imgLft;
- this.m_bounds.y = (int)this.m_imgTop;
- this.m_bounds.width = this.m_imgWidth;
- this.m_bounds.height = this.m_imgHeight;
- if (var6) {
- try {
- this.m_colGraphicObj.m_tracker.addImage(this.m_colImg, 0);
- this.m_colGraphicObj.m_tracker.waitForID(0);
- } catch (InterruptedException var18) {
- }
-
- if (!this.m_colGraphicObj.m_tracker.isErrorID(0)) {
- this.m_imgFnd = true;
- }
- }
-
- }
-
- public int getType() {
- return 6;
- }
-
- public Rectangle getBounds() {
- return this.m_bounds;
- }
- }
-